/* 

浅拷贝与深拷贝
浅拷贝只是拷贝一层, 更深层次对象级别的只拷贝引用（修改目标对象的值，源对象的值也会改变，因为对象属性指向同一地址）。
深拷贝拷贝多层，每一级别的数据都会拷贝。
Object.assign(target, ...sources) es6 新增方法可以 浅拷贝。

  */
let obj = {
  id: 1,
  name: 'andy',
  msg: {
    age: 19
  }
}
let o = {}
  //浅拷贝 只会把其中的复杂数据类型的地址拷贝过来
for (const k in obj) {
  //k 是属性名  obj[k]是属性值
  o[k] = obj[k]
}
console.log(o);
console.log('修改o会导致obj的内容也改变');
o.msg.age = 30
o.name = 'red'
console.log('obj:');
console.log(obj);
console.log('o:');
console.log(o);
console.log('-----语法糖  Object.assign(o1, obj)-----');
//浅拷贝语法糖   Object.assign(target, ...sources) es6 新增方法
let o1 = {}
Object.assign(o1, obj)
console.log('o1:');
console.log(o1);